package jp.co.succ.sikenapp;

import java.io.InputStream;
import java.util.ArrayList;

import jp.co.succ.sikencommon.ExcelDataBean;
import jp.co.succ.sikencommon.IActivity;
import jp.co.succ.sikencommon.IExcelData;
import jp.co.succ.sikencommon.SendData;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

/**
 * アプリのメニュー画面のActivity.
 * @author 小口 暁史
 *
 */
public class SikenAppActivity extends Activity {
    /**
     * Called when the activity is first created.
     * @param savedInstanceState インスタンスステータス
     */
    @Override
    public final void onCreate(final Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
    }

    /**
     * ボタン押下時のイベント処理.
     * @param pv View
     */
    public final void toQuestion(final View pv) {
        // 読込ファイル名
        String sFileName;

        // IDから読込ファイル名を設定
        if (pv.getId() == R.id.APH23Sp) {
            sFileName = "APH24Ap.xls";
        } else if (pv.getId() == R.id.NE_H21_AM2) {
            sFileName = "NE_H21_AM2.xls";
        } else if (pv.getId() == R.id.NE_H22_AM2) {
            sFileName = "NE_H22_AM2.xls";
        } else if (pv.getId() == R.id.NE_H23_AM2) {
            sFileName = "NE_H23_AM2.xls";
        } else {
            sFileName = "Error.xls";
        }

        // エクセルデータBeaを格納するリスト
        ArrayList<ExcelDataBean> oExcelDataList =
                new ArrayList<ExcelDataBean>();

        // エクセルからデータを取得
        try {
            // I.ファイル名からWK.インプットストリームを生成
            InputStream oIs = getAssets().open(sFileName);

            // WK.インプットストリームからWK.ワークブックを生成
            HSSFWorkbook oWb = new HSSFWorkbook(oIs);
            oIs.close();

            // WK.ワークブックからWK.ワークシートを生成
            Sheet oWs = oWb.getSheetAt(0);
            oWb = null;

            // WK.ワークシートの最終行を取得
            int iLastRowNum = oWs.getLastRowNum();


            // WK.ワークシートからデータを取得
            for (int iCnt = 1; iCnt <= iLastRowNum; iCnt++) {
                // WK.ワークシートから１行分のデータを取得
                Row oRow = oWs.getRow(iCnt);

                // Rowのデータ = null の場合
                if (oRow == null) {
                    break;
                }

                // Beanの初期化
                ExcelDataBean oExcelDataBean = new ExcelDataBean();

                // 問題文
                oExcelDataBean.setQuestion(oRow
                        .getCell(IExcelData.QUESTIONCOLUMN)
                        .getStringCellValue());
                // 選択肢１
                oExcelDataBean.setSelect1(oRow.getCell(IExcelData.SELECT1COLUMN)
                        .getStringCellValue());
                // 選択肢２
                oExcelDataBean.setSelect2(oRow.getCell(IExcelData.SELECT2COLUMN)
                        .getStringCellValue());
                // 選択肢３
                oExcelDataBean.setSelect3(oRow.getCell(IExcelData.SELECT3COLUMN)
                        .getStringCellValue());
                // 選択肢４
                oExcelDataBean.setSelect4(oRow.getCell(IExcelData.SELECT4COLUMN)
                        .getStringCellValue());
                // 回答
                oExcelDataBean.setAnser(
                        (int) oRow.getCell(IExcelData.ANSERCOLUMN)
                        .getNumericCellValue());
                // メモ
                oExcelDataBean.setMemo(oRow.getCell(IExcelData.MEMOCOLUMN)
                        .getStringCellValue());

                // ExcelDataをセットしたBeanをArrayListに追加
                oExcelDataList.add(oExcelDataBean);
            }
            oWs = null;
        } catch (Exception oEx) {
            // 例外エラーが発生した場合、空のリストを返却
            //oExcelDataList = new ArrayList<ExcelDataBean>();
            System.out.println(oEx.getMessage());
        }

        // 画面遷移用のインテント
        Intent oIntent = new Intent(this, SikenQuestionActivity.class);
        // インテントに引数を設定
        oIntent.putExtra(IActivity.SENDDATA, new SendData(oExcelDataList, 0));
        // 画面遷移
        startActivity(oIntent);
    }
}
